Methods, Systems, and Computer Program Products For Processing a Request For a Resource in a Communication

ABSTRACT

Methods and systems are described for processing a request for a resource in a communication. In an aspect, a criterion is received, by a second node, for requesting a resource via a first communication addressed to a first node. The first communication is sent, to the first node, including an attachment request based on the criterion. A second communication is received, by the second node, including the resource as an attachment. 
     In another aspect a first communication is received by a first node representing a first user. The first communication includes a first message addressed to the first user. An attachment request is detected in the first communication. A resource is located based on the attachment request. A second communication is sent, to a second node representing a second user. The second communication includes the resource, as an attachment, and a second message addressed to the second user.

RELATED APPLICATIONS

This is a continuation of U.S. patent application Ser. No. 12/833,014(Docket No 0155) filed on Jul. 9, 2010.

This application is related to the following commonly owned U.S. PatentApplication, the entire disclosure being incorporated by referenceherein: application Ser. No. 12,833,016 (Docket No 0158) filed on Jul.9, 2010, entitled “Methods, Systems, and Program Products forReferencing an Attachment in a Communication”.

BACKGROUND

While receiving attachments in a network communication, such as email,is common, most attachments received are unsolicited or unrequested. Torequest a resource in an attachment, a user typically sends the requestas voice and/or text data in a voice and/or text message heard and/orread by another user. The request may be as vague or as specific as thelanguage used by the requesting user. The other user must interpret therequest and find a resource that seems to match the request. The otheruser in many cases locates a “matching” resource using a program orapplication other than the communications agent that received therequest. For example, a search program may be used to search ahard-drive by the other user. The other user must enter the searchcriteria.

Accordingly, there exists a need for methods, systems, and computerprogram products for processing a request for a resource in acommunication.

SUMMARY

The following presents a simplified summary of the disclosure in orderto provide a basic understanding to the reader. This summary is not anextensive overview of the disclosure and it does not identifykey/critical elements of the invention or delineate the scope of theinvention. Its sole purpose is to present some concepts disclosed hereinin a simplified form as a prelude to the more detailed description thatis presented later.

Methods and systems are described for processing a request for aresource in a communication. In one aspect, the method includesreceiving a resource criterion for requesting a resource via a firstcommunication including a message portion including a first messageaddressed to a first user represented by a first node. The methodfurther includes sending, via a network to the first node, the firstcommunication including a request portion that includes an attachmentrequest based on the resource criterion. The method still furtherincludes receiving, by a second node representing a second user, asecond communication including, based on the request portion, theresource, as an attachment, and a second message addressed to the seconduser.

Further, a system for processing a request for a resource in acommunication is described. The system includes an execution environmentincluding an instruction-processing unit configured to process aninstruction included in at least one of a criterion handler component, aquery generator component, and a content manager component. The systemincludes the criterion handler component configured for receiving aresource criterion for requesting a resource via a first communicationincluding a message portion including a first message addressed to afirst user represented by a first node. The system further includes thequery generator component configured for sending, via a network to thefirst node, the first communication including a request portion thatincludes an attachment request based on the resource criterion. Thesystem still further includes the content manager component configuredfor receiving, by a second node representing a second user, a secondcommunication including, based on the request portion, the resource, asan attachment, and a second message addressed to the second user.

In another aspect, a method for processing a request for a resource in acommunication is described that includes receiving, via a network by afirst node, a first communication including a first message addressed toa first user. The method further includes detecting, by the first node,an attachment request included in the first communication. The methodstill further includes locating a resource based on the attachmentrequest. The method also includes sending, to a second node, a secondcommunication including the located resource, as an attachment, andincluding a second message addressed to a second user.

Still further, a system for processing a request for a resource in acommunication is described. The system includes an execution environmentincluding an instruction-processing unit configured to process aninstruction included in at least one of a com-in component, a querycontent handler component, a resource location component, and an accessdirector component. The system includes the com-in component configuredfor receiving, via a network by a first node, a first communicationincluding a first message addressed to a first user. The system furtherincludes the query content handler component configured for detecting,by the first node, an attachment request included in the firstcommunication. The system still further includes the resource locationcomponent configured for locating a resource based on the attachmentrequest. The system also includes the access director componentconfigured for sending, to a second node, a second communicationincluding the located resource, as an attachment, and including a secondmessage addressed to a second user.

BRIEF DESCRIPTION OF THE DRAWINGS

Objects and advantages of the present invention will become apparent tothose skilled in the art upon reading this description in conjunctionwith the accompanying drawings, in which like reference numerals havebeen used to designate like or analogous elements, and in which:

FIG. 1 is a block diagram illustrating an exemplary hardware deviceincluded in and/or otherwise providing an execution environment in whichthe subject matter may be implemented;

FIG. 2 is a flow diagram illustrating a method for processing a requestfor a resource in a communication according to an aspect of the subjectmatter described herein;

FIG. 3 is a flow diagram illustrating a method for processing a requestfor a resource in a communication according to an aspect of the subjectmatter described herein;

FIG. 4 a is a block diagram illustrating an arrangement of componentsfor processing a request for a resource in a communication according toanother aspect of the subject matter described herein;

FIG. 4 b is a block diagram illustrating an arrangement of componentsfor processing a request for a resource in a communication according toanother aspect of the subject matter described herein;

FIG. 5 is a block diagram illustrating an arrangement of components forperforming a method according to another aspect of the subject matterdescribed herein;

FIG. 6 is a network diagram illustrating an exemplary system accordingto another aspect of the subject matter described herein;

FIG. 7 a is a diagram illustrating a user interface presented via adisplay according to another aspect of the subject matter describedherein;

FIG. 7 b is a diagram illustrating a user interface presented via adisplay according to another aspect of the subject matter describedherein;

FIG. 7 c is a diagram illustrating a user interface presented via adisplay according to another aspect of the subject matter describedherein;

FIG. 7 d is a diagram illustrating a user interface presented via adisplay according to another aspect of the subject matter describedherein;

FIG. 8 is a message flow diagram illustrating a message flow in a systemfor processing a request for a resource in a communication according toan aspect of the subject matter described herein;

FIG. 9 a illustrates an exemplary communication between a first node anda second node according to an aspect of the subject matter describedherein; and

FIG. 9 b illustrates an exemplary communication between a first node anda second node according to an aspect of the subject matter describedherein.

DETAILED DESCRIPTION

One or more aspects of the disclosure are described with reference tothe drawings, wherein like reference numerals are generally utilized torefer to like elements throughout, and wherein the various structuresare not necessarily drawn to scale. In the following description, forpurposes of explanation, numerous specific details are set forth inorder to provide a thorough understanding of one or more aspects of thedisclosure. It may be evident, however, to one skilled in the art thatone or more aspects of the disclosure may be practiced with a lesserdegree of these specific details. In other instances, well-knownstructures and devices are shown in block diagram form in order tofacilitate describing one or more aspects of the disclosure.

An exemplary device included in an execution environment that may beconfigured according to the subject matter is illustrated in FIG. 1. Anexecution environment includes an arrangement of hardware and,optionally, software that may be further configured to include anarrangement of components for performing a method of the subject matterdescribed herein. An execution environment includes and/or is otherwiseprovided by one or more devices. An execution environment may include avirtual execution environment including software components operating ina host execution environment. Exemplary devices included in or otherwiseproviding suitable execution environments for configuring according tothe subject matter include personal computers, notebook computers,tablet computers, servers, handheld and other mobile devices,multiprocessor devices, distributed devices, consumer electronicdevices, routers, communication servers, and/or other network-enableddevices. Those skilled in the art will understand that the componentsillustrated in FIG. 1 are exemplary and may vary by particular executionenvironment.

FIG. 1 illustrates hardware device 100 included in execution environment102. FIG. 1 illustrates that execution environment 102 includesinstruction-processing unit (IPU) 104, such as one or moremicroprocessors; physical processor memory 106 including storagelocations identified by addresses in a physical memory address space ofIPU 104; persistent secondary storage 108, such as one or more harddrives and/or flash storage media; input device adapter 110, such as akey or keypad hardware, a keyboard adapter, and/or a mouse adapter;output device adapter 112, such as a display or audio adapter forpresenting information to a user; a network interface component,illustrated by network interface adapter 114, for communicating via anetwork such as a LAN and/or WAN; and a communication mechanism thatcouples elements 104-114, illustrated as bus 116. Elements 104-114 maybe operatively coupled by various means. Bus 116 may comprise any typeof bus architecture, including a memory bus, a peripheral bus, a localbus, and/or a switching fabric.

IPU 104 is an instruction execution machine, apparatus, or device.Exemplary IPUs include one or more microprocessors, digital signalprocessors (DSPs), graphics processing units, application-specificintegrated circuits (ASICs), and/or field programmable gate arrays(FPGAs). In the description of the subject matter herein, the terms“IPU” and “processor” are used interchangeably. IPU 104 may accessmachine code instructions and data via one or more memory address spacesin addition to the physical memory address space. A memory address spaceincludes addresses identifying locations in a processor memory. Theaddresses in a memory address space are included in defining a processormemory. IPU 104 may have more than one processor memory. Thus, IPU 104may have more than one memory address space. IPU 104 may access alocation in a processor memory by processing an address identifying thelocation. The processed address may be in an operand of a machine codeinstruction and/or may be identified in a register or other portion ofIPU 104.

FIG. 1 illustrates virtual processor memory 118 spanning at least partof physical processor memory 106 and at least part of persistentsecondary storage 108. Virtual memory addresses in a memory addressspace may be mapped to physical memory addresses identifying locationsin physical processor memory 106. An address space for identifyinglocations in a virtual processor memory is referred to as a virtualmemory address space; its addresses are referred to as virtual memoryaddresses; and its processor memory is known as a virtual processormemory or virtual memory. The term “processor memory” may refer tophysical processor memory 106 and/or virtual processor memory 118depending on the context in which the term is used.

Physical processor memory 106 may include various types of memorytechnologies. Exemplary memory technologies include static random accessmemory (SRAM) and/or dynamic RAM (DRAM) including variants such as dualdata rate synchronous DRAM (DDR SDRAM), error correcting codesynchronous DRAM (ECC SDRAM), and/or RAMBUS DRAM (RDRAM). Physicalprocessor memory 106 may include volatile memory as illustrated in theprevious sentence and/or may include nonvolatile memory such asnonvolatile flash RAM (NVRAM) and/or ROM.

Persistent secondary storage 108 may include one or more flash memorystorage devices, one or more hard disk drives, one or more magnetic diskdrives, and/or one or more optical disk drives. Persistent secondarystorage 108 may include removable media. The drives and their associatedcomputer-readable storage media provide volatile and/or nonvolatilestorage for computer-readable instructions, data structures, programcomponents, and other data for execution environment 102.

Execution environment 102 may include software components stored inpersistent secondary storage 108, in remote storage accessible via anetwork, and/or in a processor memory. FIG. 1 illustrates executionenvironment 102 including operating system 120, one or more applications122, and other program code and/or data components illustrated by otherlibraries and subsystems 124. In an aspect, some or all softwarecomponents may be stored in locations accessible to IPU 104 in a sharedmemory address space shared by the software components. The softwarecomponents accessed via the shared memory address space are stored in ashared processor memory defined by the shared memory address space. Inanother aspect, a first software component may be stored in one or morelocations accessed by IPU 104 in a first address space and a secondsoftware component may be stored in one or more locations accessed byIPU 104 in a second address space. The first software component isstored in a first processor memory defined by the first address spaceand the second software component is stored in a second processor memorydefined by the second address space.

Software components typically include instructions executed by IPU 104in a computing context referred to as a “process”. A process may includeone or more “threads”. A “thread” includes a sequence of instructionsexecuted by IPU 104 in a computing sub-context of a process. The terms“thread” and “process” may be used interchangeably herein when a processincludes only one thread.

Execution environment 102 may receive user-provided information via oneor more input devices illustrated by input device 128. Input device 128provides input information to other components in execution environment102 via input device adapter 110. Execution environment 102 may includean input device adapter for a keyboard, a touch screen, a microphone, ajoystick, a television receiver, a video camera, a still camera, adocument scanner, a fax, a phone, a modem, a network interface adapter,and/or a pointing device, to name a few exemplary input devices.

Input device 128 included in execution environment 102 may be includedin device 100 as FIG. 1 illustrates or may be external (not shown) todevice 100. Execution environment 102 may include one or more internaland/or external input devices. External input devices may be connectedto device 100 via corresponding communication interfaces such as aserial port, a parallel port, and/or a universal serial bus (USB) port.Input device adapter 110 receives input and provides a representation tobus 116 to be received by IPU 104, physical processor memory 106, and/orother components included in execution environment 102.

Output device 130 in FIG. 1 exemplifies one or more output devices thatmay be included in and/or may be external to and operatively coupled todevice 100. For example, output device 130 is illustrated connected tobus 116 via output device adapter 112. Output device 130 may be adisplay device. Exemplary display devices include liquid crystaldisplays (LCDs), light emitting diode (LED) displays, and projectors.Output device 130 presents output of execution environment 102 to one ormore users. In some embodiments, an input device may also include anoutput device. Examples include a phone, a joystick, and/or a touchscreen. In addition to various types of display devices, exemplaryoutput devices include printers, speakers, tactile output devices suchas motion producing devices, and other output devices producing sensoryinformation detectable by a user.

A device included in or otherwise providing an execution environment mayoperate in a networked environment communicating with one or moredevices via one or more network interface components. The terms“communication interface component” and “network interface component”are used interchangeably. FIG. 1 illustrates network interface adapter(NIA) 114 as a network interface component included in executionenvironment 102 to operatively couple device 100 to a network. A networkinterface component includes a network interface hardware (NIH)component and optionally a software component. The terms “network node”and “node” in this document both refer to a device having a networkinterface component for operatively coupling the device to a network.

Exemplary network interface components include network interfacecontroller components, network interface cards, network interfaceadapters, and line cards. A node may include one or more networkinterface components to interoperate with a wired network and/or awireless network. Exemplary wireless networks include a BLUETOOTHnetwork, a wireless 802.11 network, and/or a wireless telephony network(e.g., a cellular, PCS, CDMA, and/or GSM network). Exemplary networkinterface components for wired networks include Ethernet adapters,Token-ring adapters, FDDI adapters, asynchronous transfer mode (ATM)adapters, and modems of various types. Exemplary wired and/or wirelessnetworks include various types of LANs, WANs, and/or personal areanetworks (PANs). Exemplary networks also include intranets and internetssuch as the Internet.

The terms “device” and “node” as used herein respectively refer to oneor more devices and nodes providing and/or otherwise included in anexecution environment unless clearly indicated otherwise.

As used herein, the term “communication” refers to data for sending,sent, and/or received via a network between communicants. Acommunication includes a message portion addressed to a receivingcommunicant. A communication is sent to a communicant to present amessage in the message portion to the communicant. The term“communicant” as used herein refers to a user represented in acommunication. A communicant or user is represented by a “communicationsagent” configured to operate in an execution environment, on behalf ofthe represented communicant, to send data to and/or receive data fromanother communications agent according to a communications protocol viaa network. A communications protocol defines and/or otherwise identifiesan address space including communications addresses for delivering datasent in a communication from one communications agent to another.

The term “communicant alias” as used herein refers to an identifier of acommunicant in a communication where the communicant alias is not acommunications address included in an address space of a communicationsprotocol for sending and/or receiving data in the communication.

The block diagram in FIG. 4 a illustrates an exemplary system forprocessing a request for a resource in a communication according to themethod illustrated in FIG. 2. A system for performing the methodillustrated in FIG. 2 includes an execution environment, including aninstruction-processing unit, configured to process an instructionincluded in at least one of a criterion handler component 402, a querygenerator component 404, and a content manager component 406 asillustrated in FIG. 4 a. Some or all of the exemplary componentsillustrated in FIG. 4 a may be adapted for performing the methodillustrated in FIG. 2 in a number of execution environments. FIG. 5illustrates a block diagram including the components of FIG. 4 a and/oranalogs of the components of FIG. 4 a respectively adapted for operationin execution environment 501, which includes or otherwise is provided byone or more nodes.

The block diagram in FIG. 4 b illustrates an exemplary system forprocessing a request for a resource in a communication according to themethod illustrated in FIG. 3. A system for performing the methodillustrated in FIG. 3 includes an execution environment, including aninstruction-processing unit, configured to process an instruction in atleast one of a com-in component 412, a query content handler component414, a resource location component 416, and an access director component418 illustrated in FIG. 4 b. Some or all of the exemplary componentsillustrated in FIG. 4 b may be adapted for performing the methodillustrated in FIG. 3 in a number of execution environments. FIG. 5 is ablock diagram illustrating the components of FIG. 4 b and/or analogs ofthe components of FIG. 4 b adapted for operation in executionenvironment 501, which includes or otherwise is provided by one or morenodes.

FIG. 1 illustrates components of an exemplary device/node that may atleast partially provide and/or otherwise be included in an executionenvironment. The components illustrated in FIG. 5 may be included in orotherwise combined with the components of FIG. 1 to create a variety ofarrangements of components according to the subject matter describedherein.

FIG. 6 illustrates first node 602 as an exemplary device included inand/or otherwise adapted for providing an instance and/or adaptation ofexecution environment 501 in FIG. 5. Second node 604 also illustrates adevice that may be included in and/or otherwise adapted for providing aninstance and/or adaptation of execution environment 501. FIG. 6 alsoillustrates that first node 602 and second node 604 are operativelycoupled to network 606 via respective network interface componentsenabling first node 602 and second node 604 to communicate.

Execution environment 501 is illustrated in FIG. 5 hostingcommunications agent 503. A first instance and/or analog ofcommunications agent 503 may operate in first node 602 and a secondinstance and/or analog may operate in second node 604. Components inFIG. 5 are referenced for illustrative purposes in describingcommunications agents operating in an execution environment of firstnode 602 and an execution environment of second node 604. Exemplarycommunications agents include email clients, phone clients includingVoice over Internet Protocol (VoIP) clients, instant messaging clients,multi-media communications clients including video phone clients, andother data transfer agents.

FIG. 5 illustrates communications agent 503 including an adaptation ofthe arrangement of components in FIG. 4 a and an adaptation of thearrangement of components in FIG. 4 b. A first communications agent 503may operate, in first node 602, on behalf of a first communicant tocommunicate with a second communicant represented by a communicationsagent operating in second node 604. Another instance and/or analog ofcommunications agent 503 may operate in an execution environment ofsecond node 604 on behalf of the second communicant.

As stated, the various adaptations of the arrangement in FIG. 4 a aswell as the various adaptations of the arrangement in FIG. 4 billustrated and described herein are not exhaustive. For example, thoseskilled in the art will see based on the description herein thatarrangements of components for performing the method illustrated in FIG.2 and/or in FIG. 3 may be distributed across more than one node and/orexecution environment. For example, such an arrangement may operate atleast partially in a communications agent in a user node and at leastpartially in a server node interoperating with the user node.

FIG. 5 illustrates network stack 505 configured for sending and/orreceiving data in a communication via network 606 in FIG. 6. First node602 and second node 604 may be operatively coupled to network 606 viarespective, network interface components. Network stacks in first node602 and in second node 604 may support the same protocol suite, such asTCP/IP, or may communicate via a network gateway or other protocoltranslation device and/or service.

Communications agents 503 in FIG. 5, respectively operating in firstnode 602 and in second node 604 in FIG. 6 may interoperate via theirrespective network stacks 505. Communications agents 503 may communicatevia one or more communications protocols. FIG. 5 illustratescommunications protocol component 507 exemplifying a subsystem forexchanging data via network 606 according to one or more communicationsprotocols, such as simple mail transfer protocol (SMTP), an instantmessaging protocol, and/or a real-time voice and/or video protocol. Acommunication between communications agents 503 in first node 602 andsecond node 604 may include more than one type of data and may use oneor more communications protocols for exchanging the one or more types ofdata via network 606.

Communications agents 503 in FIG. 5, in first node 602, and in secondnode 604, respectively, may communicate via discrete messages, arequest/reply protocol, a data streaming protocol, a session and/orconnection-oriented protocol, a connectionless protocol, a real-timecommunications protocol, an asynchronous communication, a store andforward communications protocol, a reliable delivery communicationsprotocol, a best-effort delivery communications protocol, a secureprotocol, and/or an unsecure protocol, to name a few communicationsoptions.

FIG. 5 illustrates communications agent 503 including content managercomponent 506. Content manager component 506 in first node 602 mayinteroperate with communications protocol layer component 507 and/ornetwork stack 505 to receive data in one or more communications vianetwork 606 with second node 604. Content manager component 506 includesand/or otherwise interoperates with com-in component 512 operativelycoupling communications agent 503 to an interface of communicationsprotocol component 507 for receiving the data from second node 604.Second node 604 may include an adaptation or analog of communicationsagent 503 including an adaptation and/or analog of com-in component 512for receiving data from first node 602 in a communication.

Data received in a communication may include one or more resourcesand/or content types. Exemplary content types include plain text, markupsuch as hypertext markup language (HTML), audio data, image data, and/orexecutable data. Executable data may include script instruction(s), bytecode, and/or machine code. In FIG. 5, communications agent 503 includesone or more content handler components 509 to process data receivedaccording to its content type. A data type may be identified by a MIMEtype identifier. Exemplary content handler components 509 include atext/html content handler component for processing HTML representations;an application/xmpp-xml content handler component for processingextensible messaging and presence protocol (XMPP) streams includingpresence tuples, instant messages, and audio content handlers includingand/or configured to retrieve suitable codices; one or more videocontent handler components for processing video representations ofvarious types; and still image data content handler components forprocessing various image data representations. Content handlercomponent(s) 509 process received data representations and may providetransformed data from the representations to one or more user interfaceelement handler components 511.

User interface element handler components 511 are illustrated inpresentation controller component 513 in FIG. 5. Presentation controllercomponent 513 may manage visual, audio, and other types of output forits including application as well as receive and route detected user andother inputs to components and extensions of its including application,communications agent 503. With respect to FIG. 5, a user interfaceelement handler component 511 may be adapted to operate at leastpartially in a content handler component 509 such as a text/html contenthandler component and/or a script content handler component.Additionally or alternatively, a user interface element handlercomponent in execution environment 501 may be received in acommunication. For example, an email may include one or more scriptinstructions.

FIG. 7 a illustrates an exemplary communication edit/send window 702 apresentable in a presentation space of a display device, such as outputdevice 130 in FIG. 1. Communication edit/send window 702 a includes asender UI element 704 a for presenting a communicant identifier of acommunicant represented by the communications agent presentingcommunication edit/send window 702 a. Communication edit/send window 702a also includes a recipient UI element 706 a for presenting one or morecommunicant identifier(s) identifying one or more communicant(s)included in the communication represented by communications agentsoperating in other nodes. Presentation space 708 a is provided in firstcommunication edit/send window 702 a for presenting a message UI element710 a for presenting a message exchanged and/or for exchanging in thecommunication. FIG. 7 a also illustrates presentation space 708 aincluding one or more communications controls for exchanging data inand/or otherwise managing the communication. Send button 712 aillustrates an exemplary control for sending data in the communicationto one or more identified remote communicants.

The term “attachment” as used herein refers to a portion of acommunication that includes data from one communicant to another otherthan data in the message portion. A resource sent as an attachment isdata that is typically not presented “inline” or in a message includedin a message portion of a communication. Email attachments are perhapsthe most widely known attachments included in communications. An emailattachment is a file or other resource sent along with an email in aportion of the email separate from a message portion. As defined, othertypes of text communications as well as voice and video communicationsmay include attachment portions. A communication may include one or moreresources as one or more attachments.

The components of a user interface are generically referred to herein asuser interface elements. More specifically, visual components of a userinterface are referred to herein as visual interface elements. A visualinterface element may be a visual component of a graphical userinterface (GUI). Exemplary visual interface elements include windows,textboxes, sliders, list boxes, drop-down lists, spinners, various typesof menus, toolbars, ribbons, combo boxes, tree views, grid views,navigation tabs, scrollbars, labels, tooltips, text in various fonts,balloons, dialog boxes, and various types of button controls includingcheck boxes and radio buttons. An application interface may include oneor more of the exemplary elements listed. Those skilled in the art willunderstand that this list is not exhaustive. The terms “visualrepresentation”, “visual component”, and “visual interface element” areused interchangeably in this document. Other types of user interfaceelements include audio output components referred to as audio interfaceelements, tactile output components referred to as tactile interfaceelements, and the like.

A “user interface (UI) element handler” component, as the term is usedin this document, includes a component configured to send informationrepresenting a program entity for presenting a user detectablerepresentation of the program entity by an output device, such as adisplay. A “program entity” is an object included in and/or otherwiseprocessed by an application or executable program component. The userdetectable representation is presented based on the sent information.The sent information is referred to herein as “presentationinformation”. Presentation information may include data in one or moreformats including image formats such as JPEG, video formats such as MP4,markup language data such as HTML and other markup based languages,and/or instructions such as those defined by various script languages,byte code, and/or machine code. For example, a voice communication forreceiving by a communications agent and/or for sending by acommunications agent may be included in a media container having aspecified format, such as MPEG4, and may be compressed, encrypted,and/or otherwise encoded. The data is communicated for presenting inand/or by one or more user interface elements included in a userinterface of a communications agent included in the communication.Components configured to send information representing one or moreprogram entities for presenting particular types of output by particulartypes of output devices include visual interface element handlercomponents, audio interface element handler components, tactileinterface element handler components, and the like.

A representation of a program entity may be presented and/or otherwisemaintained in a presentation space. As used in this document, the term“presentation space” refers to a storage region allocated and/orotherwise provided for storing presentation information, which mayinclude audio, visual, tactile, and/or other sensory data forpresentation by and/or on an output device. For example, a buffer forstoring an image and/or text string may be a presentation space. Apresentation space may be physically and/or logically contiguous ornon-contiguous. A presentation space may have a virtual as well as aphysical representation. A presentation space may include a storagelocation in processor memory, secondary storage, a memory of an outputdevice adapter device, and/or a storage medium of an output device. Ascreen of a display, for example, is a presentation space.

As used herein, the terms “program”, “program component”, “application”,“application component”, “executable”, and “executable component” referto any data representation that may be translated into a set of machinecode instructions and optional associated program data. Thus, a programor executable may include an application, a shared or non-sharedlibrary, and a system command. Program representations other thanmachine code include object code, byte code, and source code. Objectcode includes a set of instructions and/or data elements that either areprepared for linking prior to loading or are loaded into an executionenvironment. When in an execution environment, object code may includereferences resolved by a linker and/or may include one or moreunresolved references. The context in which this term is used will makeclear that state of the object code when it is relevant. This definitionincludes machine code and virtual machine code, such as Java™ byte code.

Various user interface elements illustrated in FIG. 7 a presented bycommunications agent 503 may be presented by one or more user interfaceelement handler components 511. User interface element handlercomponent(s) 511 in FIG. 5 may send presentation informationrepresenting visual interface element(s), such as sender UI element 704a in FIG. 7 a, to GUI subsystem 515. GUI subsystem 515 may instructgraphics subsystem 517 to draw the visual interface element(s) in aregion of an output device, included in execution environment 501 of anode, based on the presentation information received in and/or generatedfrom data received in the communication.

Input may be received via input driver 519 in FIG. 5. For example, auser may move a mouse to move a pointer presented in a display of firstnode 602 over send button 712 a. The user may provide an input detectedby the mouse. The detected input may be received by GUI subsystem 515via input driver 519 as a send command indicator based on theassociation of the shared location of the pointer and the send button712 a in the presentation space of the display.

Data to send in a communication to a remote communications agent may bereceived by one or more content handler component(s) 509 to transformthe data into one or more representations suitable for transmitting inthe communication and/or suitable for processing by the remotecommunications agent. The one or more data representations may beprovided to content manager component 506 for sending in thecommunication. Content manager component 506 may package the one or moredata representations in a message formatted according to thecommunications protocol provided by communications protocol component507. Content manager component 506 may alternatively or additionallyencode and/or otherwise transform one or more of the datarepresentations for sending in a data stream such as voice stream and/ora video stream for communicating in the communication to the remotecommunications agent.

Content manager component 506 may provide the packaged, encoded, and/ortransformed data to communications protocol component 507 via com-outcomponent 521. Com-out component 521 illustrates a component incommunications agent 503 for operatively coupling communications agent503 to communications protocol component 507 according to an interfaceprovided by communications protocol component 507 for sending data in acommunication according to a communications protocol embodied incommunications protocol component 507. Communications protocol component507 may further package and/or otherwise transform the data to send vianetwork stack 505 for delivery via network 606 to a node including acommunications agent representing a communicant in the communication.

With reference to FIG. 2, block 202 illustrates that the method includesreceiving a resource criterion for requesting a resource via a firstcommunication including a message portion including a first messageaddressed to a first user represented by a first node. Accordingly, asystem for processing a request for a resource in a communicationincludes means for receiving a resource criterion for requesting aresource via a first communication including a message portion includinga first message addressed to a first user represented by a first node.For example, as illustrated in FIG. 4 a, criterion handler component 402is configured for receiving a resource criterion for requesting aresource via a first communication including a message portion includinga first message addressed to a first user represented by a first node.FIG. 5 illustrates criterion handler component 502 as an adaptationand/or analog of criterion handler component 402 in FIG. 4 a. One ormore criterion handler components 502 operate in execution environment501.

FIG. 8 illustrates a criterion message 802 communicated within secondnode 604 for receiving a resource criterion for sending a request for aresource to a first communicant represented by a communications agent infirst node 602.

A second communicant may identify a first communicant to communicatewith via a communication over a network. For example, an identifier ofthe first communicant may be received as input from the secondcommunicant. The identifier may be received to initiate and/or otherwiseinclude the first communicant in a communication. In FIG. 5,presentation controller 513 and/or a UI element handler 511 forrecipient UI element 706 a in FIG. 6 may receive an alias and/orcommunications address identifying the first communicant in response toa user input corresponding to recipient UI element handler 706 a. Theuser input may be detected by, for example, input driver 519.Corresponding input information may be routed to presentation controller513 by GUI subsystem 515 as described above.

The second communicant may provide a message for exchanging in thecommunication via a message UI element 710 a. In FIG. 7, the secondcommunicant may enter a message via a keyboard or other input device.The message to be sent to the first communicant may be presented, inresponse to detecting the message input by a UI element handlercomponent 511 for a message UI element 710 a presented in presentationspace 708 a.

Resource query dialog 722 b in FIG. 7 b may be presented by presentationcontroller component 513 and/or one or more UI element handlercomponents 511. Resource query dialog 722 b may be presented in responseto a user input detected corresponding to request button UI element 714a in FIG. 7 a. Resource query dialog 722 b may be presented forreceiving one or more resource criteria for requesting a resource fromthe first communicant via a first communications agent representing thefirst communicant. A resource criterion may be a name or identifier of aresource, such as a URI. A criterion may be more complex and may beexpressed in a formal query language, such as structured query language(SQL), for sending to the second communication agent.

Resource query dialog 722 b illustrates attributes usable for locatingone or more files. Presentation space 724 b includes a number of form UIelements for receiving one or more resource criteria by criterionhandler component 502. Execution environment 501 may include a singlecriterion handler component 502 to receive resource criterion viaresource query dialog 722 b or may include multiple criterion handlercomponents 502. For example, execution environment 501 may include acriterion handler component 502 for each form UI element and/or mayinclude a criterion handler component 502 for each type of form UIelement.

“Match In” text box 726 b illustrates a text box for receiving aresource criterion for matching content in a resource. “Match In” textbox 726 b illustrates that a resource criterion may be represented in aregular expression language. Name text box 728 b illustrates a form UIelement for representing a resource name according to a file system nameexpression language. Name text box 728 b illustrates a resourcecriterion based on a “wild-card” symbol for matching one or more filesor other named resources. Drop-down list UI element 730 b illustratesthat a request may identify a role associated with a resource as aresource criterion for matching a user, group, and/or other nameableentity associated with a resource. “Date Modified” UI element 732 b and“Date Created” UI element 734 b illustrated various date and/or timebased resource criteria for matching date and/or time attributes of aresource. Text editor UI element 736 b illustrates that a tag associatedwith a resource may be specified as a resource criterion. A resourcecriterion may be specified so that all or some of the criterion must bemet for a resource.

In response to a user input corresponding to “OK” button 738 b, formdata received based on resource query dialog 722 b may be received bycriterion handler component 502 as a resource criterion or resourcecriteria. The resource criterion may be provided and/or otherwiseidentified to query generator component 504 to generate an attachmentrequest for sending to the first communications agent in first node 602along with the message received via message UI element 710 a in FIG. 7a.

Returning to FIG. 2, block 204 illustrates that the method furtherincludes sending, via a network to the first node, the firstcommunication including a request portion that includes an attachmentrequest based on the resource criterion. Accordingly, a system forprocessing a request for a resource in a communication includes meansfor sending, via a network to the first node, the first communicationincluding a request portion that includes an attachment request based onthe resource criterion. For example, as illustrated in FIG. 4 a, querygenerator component 404 is configured for sending, via a network to thefirst node, the first communication including a request portion thatincludes an attachment request based on the resource criterion. FIG. 5illustrates query generator component 504 as an adaptation and/or analogof query generator component 404 in FIG. 4 a. One or more querygenerator components 504 operate in execution environment 501.

FIG. 8 illustrates first communication 804 including an attachmentrequest in a request portion of first communication 804. FIG. 8illustrates second node 604 sending first communication 804 and firstnode 602 receiving first communication 804.

A query may be specified in a standard query language, such asstructured query language (SQL). In an aspect, query generator component504 may represent a specified resource criterion in an attachmentrequest based on capabilities of a first communications agent identifiedvia a previous communication between first node 602 and second node 604.

In response to an indication to initiate a communication and/or tootherwise send data in a communication, message data whether voice,text, and/or image data may be sent by communications agent 503 insecond node 604 via communications protocol component 507 for deliveryto the first communications agent representing the identified firstcommunicant. For example, a user input corresponding to send button 712a may be received by presentation controller component 513 via inputdriver 519 and GUI subsystem 515 as described above. Presentationcontroller component 513 may provide one or more portions of data tosend in the communication to one or more content handlers according tothe types of the one or more portions. For example, a text message maybe provided to a text/plain content handler 509 for processing contenttypes having text/plain and/or text/* MIME type identifiers. Querygenerator component 504 may include and/or may be included in a contenthandler instructed to process resource criterion information receivedfrom one or more criterion handler component 502 into an attachmentrequest included in a request portion of the communication to be sent.

One or more representations of the attachment request may be generatedbased on the resource criterion. Query generator component 504 in FIG. 5may format, encode, and/or otherwise transform the received resourcecriterion information into an attachment request in a format suitablefor first node 602. FIG. 9 a illustrates email communication 900 a.Email communication 900 a is illustrated formatted as a multipart/mixedcontent type including request portion 902 a. Request portion 902 a maybe identified as a request by its location in the communication and/orby its content type. A request portion content type may be detectedbased on content included in the message and/or based on metadata suchas content-type header 904 a identifying a MIME type identifier, such as“application/attachment-query”, defined for representing one or moreresource criteria in an attachment request. The“application/attachment-query” MIME type identifier is exemplary. OtherMIME type identifiers exist that may be defined to identify anattachment request, and new MIME type identifiers for identifying arequest portion in a communication may be defined.

A content type identifying a request portion may be included in arepresentation of an attachment request. For example, a content handler509 may be configured to detect a request portion based on detectingvalid XQuery and/or SQL content, as described above. A content typeidentifier may be a position and/or location in a communication. Theposition or location may be absolute or relative. For example, a schemafor a communication may define that a request portion in a communicationis included in the communication at the end of the communication. Theremay be one or more request portions at the end. In another aspect, aschema for a communication may specify that a portion of a communicationfollowing a message portion is a request portion. Other request portionsmay follow. If no attachment request is included, the request portionmay include no content or may include an indicator that no attachmentrequest is included.

FIG. 9 a illustrates that “application/attachment-query” MIME typeidentifier may identify a schema for an XML-based language forspecifying attachment-query documents. FIG. 9 a illustratesattachment-query document 906 a. Attachment-query document 906 aincludes criterion tag elements 908 a corresponding to the form elementsin FIG. 7 a. A criterion tag element 908 a identifies a resourcecriterion name, such as “content” indicating that the criterion isassociated with the content of a resource. A criterion tag element 908 aalso identifies a criterion type, such as “regex” indicating that thecriterion is represented according to a particular regular expressionlanguage. A criterion tag element 908 a identifies a value for matchingaccording to the type of the criterion. FIG. 9 a illustrates “and” tag910 a indicating that all the resource criteria must be met foridentifying a resource. An “or” tag (not shown) may be defined by aschema for attachment-query documents. Other operator elements andoperator precedence may be defined by the schema. Grouping elements formanaging operator precedence, such as parenthesis element, may bedefined by the schema.

A request portion generated by query generator component 504, along witha message portion and any other data to include in the communication,may be provided and/or otherwise identified to content manager component506 for sending in the communication. Content manager component 506 andcom-out component 521 may further package and/or transform the data sothat it is suitable for sending in the communication. Com-out component521 may provide the resource portion, the message portion, and any otherdata for sending in the communication in representations suitable forsending by communications protocol component 507 to the firstcommunications agent in first node 602 in first communication 804 inFIG. 8.

With reference to FIG. 3, block 302 illustrates that the method includesreceiving, via a network by a first node, a first communicationincluding a first message addressed to a first user. Accordingly, asystem for processing a request for a resource in a communicationincludes means for receiving, via a network by a first node, a firstcommunication including a first message addressed to a first user. Forexample, as illustrated in FIG. 4 b, com-in component 412 is configuredfor receiving, via a network by a first node, a first communicationincluding a first message addressed to a first user. FIG. 5 illustratescom-in component 512 as an adaptation and/or analog of com-in component412 in FIG. 4 b. One or more com-in components 512 operate in executionenvironment 501.

The communication illustrated by first communication 804 in FIG. 8 maybe received by a communications agent in first node 602. The firstcommunication may be delivered to first node 602 based on an address ofthe communications agent identifying a first communicant represented bythe communications agent 503 instance of first node 602. Communicationsagent 503 may represent other communicants having other addresses. Theaddress in first communication 804 indicates that the content of firstcommunication 804 including a message portion is addressed to the firstcommunicant.

The first communication illustrated by first communication 804 in FIG. 8may be received in one or more packets via network 606 by network stack505 and communications protocol component 507 in an instance of and/oranalog of execution environment 501 including and/or otherwise providedby first node 602. The data in the communication may be received bycom-in component 512. Com-in component 512 may provide the data tocontent manager component 506. Content manager component 506 maydetermine one or more content types of the data. The content and/orportions of the content may be provided to one or more content typehandler components 509 based on the one or more content types identifiedby content manager component 506. For example, FIG. 9 a illustratesmessage portion 912 a including “text/plain” MIME type identifier 914 aas a content type identifier. Message portion 912 a may be provided to atext/plain content handler 509. Audio data in a voice communication maybe provided to an audio content handler component 509, and video data ina video communication may be provided to a video content handlercomponent 509.

Returning to FIG. 3, block 304 illustrates that the method furtherincludes detecting, by the first node, an attachment request included inthe first communication. Accordingly, a system for processing a requestfor a resource in a communication includes means for detecting, by thefirst node, an attachment request included in the first communication.For example, as illustrated in FIG. 4 b, query content handler component414 is configured for detecting, by the first node, an attachmentrequest included in the first communication. FIG. 5 illustrates querycontent handler component 514 as an adaptation and/or analog of querycontent handler component 414 in FIG. 4 b. One or more query contenthandler components 514 operate in execution environment 501.

FIG. 8 illustrates detect message 806 communicated within first node 602for detecting one or more attachment requests for locating the resource.

Content manager component 506 may detect content type informationdescribed above to detect a request portion of a communication. Forexample, the content illustrated in FIG. 9 a may be received in firstcommunication 804. Content manager component 506 may detect“application/attachment-query” MIME type identifier in content-typeheader 904 a. The “application/attachment-query” MIME type identifiermay be defined to identify an attachment request based on one or moreresource criteria for identifying a requested resource. Content managercomponent 506 may identify request portion 902 a as including theattachment request.

In response to detecting an attachment request in first communication804, content manager component 506 may provide the attachment requestand/or a resource criterion identified to query content handlercomponent 514. For example, query content handler component 514 may beconfigured to operate according to a schema defining a format and/or avocabulary for an XML-based language for attachment-query documents.Communication manager component 506 may provide attachment-querydocument 906 a, as an attachment request, to query content handlercomponent 514. Query content handler component 514 may operate accordingto an attachment-query schema. In an aspect, a query content handlercomponent may process more than one attachment request content type.Alternatively or additionally, execution environment 501 may includemultiple query content handlers 514 for supporting multiple attachmentrequest content types.

FIG. 7 c illustrates a user interface presented by a communicationsagent for presenting data received in a communication with anothercommunications agent. Communication receive window 752 c may bepresented by presentation controller 513 and/or one or more UI elementhandler components 511 operating in an instance, adaptation, and/oranalog of execution environment 501 including and/or otherwise providedby first node 602. “From” UI element 754 c may include an identifier ofthe second communicant responsible for sending first communication 804.“To” UI element 756 c may include an identifier of the first communicantrepresented by the first communications agent in first node 602illustrated by communications agent 503 in FIG. 5. Text, image, and/orvideo content received in the communication may be presented in contentpane 760 c in presentation space 758 c of communication receive window752 c. User interface controls for managing the communications and/orcontent received in the communication may be represented by varioustypes of UI elements.

In FIG. 7 c, communication receive window 752 c illustrates deletebutton 762 c for receiving an input to delete content received in firstcommunication 804, reply button 764 c for creating and/or sending datain a second communication in reply to the received first communication804, locate button 766 c for locating a resource based onattachment-query document 906 a detected in request portion 902 a infirst communication 804, and a save button 768 c for saving the messageportion and other content received in first communication 804 in aparticular folder and/or location in a data store in the executionenvironment of first node 602. When an attachment request is notdetected, locate button 766 c may be presented as inactive or notpresented in second communication receive window 752 c.

Returning to FIG. 3, block 306 illustrates that the method yet furtherincludes locating a resource based on the attachment request.Accordingly, a system for processing a request for a resource in acommunication includes means for locating a resource based on theattachment request. For example, as illustrated in FIG. 4 b, resourcelocation component 416 is configured for locating a resource based onthe attachment request. FIG. 5 illustrates resource location component516 as an adaptation and/or analog of resource location component 416 inFIG. 4 b. One or more resource location components 516 operate inexecution environment 501.

FIG. 8 illustrates locate message 808 communicated within first node 602for initiating a search and/or otherwise for locating a resource basedon the attachment request.

In an aspect, communications agent 503 in FIG. 5 may invoke resourcelocation component 516 automatically to locate one or more resourcesbased on an identified resource criterion in an attachment request andin response to detecting an attachment request in a communication. Inanother aspect, communications agent 503 may invoke resource locationcomponent 516 automatically to locate one or more resources based on anattachment request in a communication in response to detecting anindication to present, via a output device, some or all of a messagereceived in a message portion of the communication. Resource locationcomponent 516 may be invoked and/or may operate based on the attachmentrequest and/or resource criterion identified to locate a resource priorto, during, and/or after other content received in the communication isprocessed. Processing may include, for example presenting a messageincluded in the message portion in message UI element 760 c in FIG. 7 cin communication receive window 752 c.

In another aspect, communications agent 503 operating in first node 602may present a UI control, such as locate button 766 c, to receive aninstruction from the first communicant to locate a resource based on anattachment request. Alternatively or additionally, communications agent503 may identify a resource based on an attachment request via resourcelocation component 516 in response to detecting user input for replying,forwarding, and/or otherwise responding to the received communication.Presentation controller component 513 may receive input information inresponse to a detected user input that corresponds to reply button 764c. Presentation controller component 513 may interoperate with resourcelocation component 516 to identify one or more resources that match aresource criterion identified by the attachment request prior to,during, and/or after the first communicant provides message content forthe reply. Alternatively or additionally, communication receive window752 c or an analogous user interface may be presented for receiving datato send in a second communication in reply to first communication 804.The user interface for replying to first communication 804 may includelocate button 766 c and/or an analogous UI control for receiving anindication from the first communicant to locate a resource based theattachment request.

The method illustrated in FIG. 2 may include additional aspectssupported by various adaptations and/or analogs of the arrangement ofcomponents in FIG. 4 a. As described above, in one aspect a resource maybe located automatically in response to detecting the attachmentrequest. In another aspect, locating a resource may include presenting alocator UI element representing an attachment request. Locate button 766c in FIG. 7 c exemplifies one type of locator UI control. Locate button766 c may be presented by presentation controller component 513 asdescribed above. A user input corresponding to a locator UI control,such as locate button 766 c, may be detected by presentation controllercomponent 513. Presentation controller component 513 may instructresource location component 516 to locate the resource based on anattachment request represented by the locator UI control.

In another aspect, a locator UI element may be presented to receive oneor more additional resource criteria from a user. Based on the locatorUI element and input from the user, resource location component 516 mayreceive criterion information identifying an additional criterion.Resource location component 516 may locate one or more resources inresponse to receiving the additional criterion. For example, a resourcecriterion may identify a resource file name, such as “febAccounts.xlsx”.A file locator dialog may be presented by presentation controllercomponent 513 including a representation of the file name. The filelocator dialog may be presented to receive input for navigating to adirectory or folder including a file with a matching file name. Based onuser input, a folder and/or directory is identified as an additionalresource criterion.

In another example, a request may include a resource criterion thatmatches files that include content with a content type matchingtext/plain MIME type identifier and that were created in the last sevendays since the communication including the attachment request wasreceived. A locator dialog may be presented including representations ofall files in a node that match the resource criteria. User input toselect for inclusion and/or select for exclusion identifies anadditional criterion that identifies at least a portion of the filesrepresented in the locator UI element.

Returning to FIG. 3, block 308 illustrates that the method additionallyincludes sending, to a second node, a second communication including thelocated resource, as an attachment, and including a second messageaddressed to a second user. Accordingly, a system for processing arequest for a resource in a communication also includes means forsending, to a second node, a second communication including the locatedresource, as an attachment, and including a second message addressed toa second user. For example, as illustrated in FIG. 4 b, the accessdirector component 418 is configured for sending, to a second node, asecond communication including the located resource, as an attachment,and including a second message addressed to a second user. FIG. 5illustrates access director component 518 as an adaptation and/or analogof access director component 418 in FIG. 4 b. One or more accessdirector components 518 operate in execution environment 501.

FIG. 8 illustrates second communication 810, including the resourcelocated based on the attachment request, sent by first node 602. Theresource is included as an attachment in second communication 810 to asecond message included in a message portion of second communication810. FIG. 8 illustrates second communication 810 received by second node604.

Resource location component 516 may identify to access directorcomponent 518 one or more resources in a data base, a file system,and/or other resource data store based on the attachment request. Accessdirector component 518 may identify a service for generating and/oraccessing a resource. Access director component 518 may interoperatewith the service to generate and/or otherwise access the locatedresource(s). A data store and/or service accessed by access directorcomponent 518 and/or by a component operating on behalf of accessdirector component 518 may be included in the execution environment offirst node 602. A data store and/or service accessed by access directorcomponent 518 may be included in an execution environment of anothernode and accessed via network 606.

In response to accessing a resource located by resource locationcomponent 516, access director component 518 may provide and/orotherwise identify the resource to a suitable content handler component509 based on a content type of the resource. The content handlercomponent 509 may decode, encode, reformat, translate, and/or otherwisetransform the resource for including in second communication 810.

FIG. 9 b illustrates communication 900 b that may be communicated insecond communication 810. Second message portion 902 b illustrates amessage portion in second communication 810. Note that a message portionmay be empty as illustrated by message portion 902 b. Attachment portion904 b illustrates the resource as image data encoded for sending in atext-based communication.

Message portion 902 b and attachment portion 904 b may be provided byrespective content handler components 509 to content manager component506. Content manager component 506 may construct the content asillustrated in FIG. 9 b and/or otherwise provide for encoding,translating, combining, and/or otherwise preparing the content forsending in second communication 810. As described above, communicationmanager component 506 may send second communication 810 via com-outcomponent 521 communicatively coupling content manager component 506 tocommunications protocol component 507 and/or network stack component 505for sending second communication 810 via network 606 to second node 604addressed to the second communicant represented by the communicationsagent operating in second node 604.

Returning to FIG. 2, block 206 illustrates that the method yet furtherincludes receiving, by a second node representing a second user, asecond communication including, based on the request portion, theresource, as an attachment, and a second message addressed to the seconduser. Accordingly, a system for processing a request for a resource in acommunication includes means for receiving, by a second noderepresenting a second user, a second communication including, based onthe request portion, the resource, as an attachment, and a secondmessage addressed to the second user. For example, as illustrated inFIG. 4 a, content manager component 406 is configured for receiving, bya second node representing a second user, a second communicationincluding, based on the request portion, the resource, as an attachment,and a second message addressed to the second user. FIG. 5 illustratescontent manager component 506 as an adaptation and/or analog of contentmanager component 406 in FIG. 4 a. One or more content managercomponents 506 operate in execution environment 501.

Data sent in second communication 810, by first node 602, may bereceived by com-in component 512 operating in an instance, adaptation,and/or analog of execution environment 501 including and/or provided bysecond node 604. The received communication includes a message addressedto the second communicant and an attachment including the resourcelocated based on the attachment request identified by firstcommunication 804. Content manager component 506 may detect the messageportion, such as message portion 902 b in second communication 810.Content manager component 506 may detect an attachment portion, such asattachment portion 904 b in second communication 810. Message portion902 b and attachment portion 904 b may be provided to suitable contenthandler components 509 based on the content types of the message portionand the attachment portion detected by content manager component 506.

In an aspect, an attachment portion that is a response to an attachmentrequest sent in a previous message may include information identifyingthe attachment as a response. For example, an attachment request may besent with a correlator and a located resource received in an attachmentmay identify the correlator to identify the attachment as a response tothe particular attachment request previously sent.

In an aspect, accessing a resource received in response to an attachmentrequest includes presenting, via an output device, an attachment userinterface control representing the resource. In response to detecting auser input corresponding to the attachment user interface control, theresource may be accessed. One or more content handler components 509 mayprocess data received in second communication 810 to represent that datain a format for presenting to the second communicant. Communicationreceive window 782 d in FIG. 7 d illustrates user interface componentsfor presenting the message, to the second communicant, received insecond communication 810. Communication receive window 782 d is similarto first communication receive window 752 b, but includes anattachment(s) UI element 798 d based on the attachment portion in secondcommunication 810.

In an aspect, access handler component 523 may be invoked to access theresource in response to a user input corresponding to attachments button798 d. For example, an input driver component 519 may detect an inputand GUI subsystem 515 may associate the detected input with a locationin a display where attachments button 798 d is presented. GUI subsystem515 may invoke presentation controller component 513 and/or a UI elementhandler component 511 associated with attachments button 798 d toprocess the detected user input. Access handler component 523 mayretrieve the resource from the communication. The content of thecommunication may be stored in one or more data stores accessed via oneor more data storage systems, such as file system/DBMS component 525and/or a processor memory included in execution environment 501 ofsecond node 604.

In another aspect, the resource may be accessed automatically withoutreceiving an indication from the second communicant to access theresource. For example, content manager component 506 may detect theattachment portion in the content received in second communication 810.Content manager component 506 may provide a representation of theresource included in the attachment portion to access handler component523 in response to detecting the access information. Access handlercomponent 523 may decode, reformat, translate, and/or otherwisetransform the representation of the resource for presenting to thesecond communicant and/or for storing in a location in a data storeaccessed via a storage subsystem.

The method illustrated in FIG. 2 may include additional aspectssupported by various adaptations and/or analogs of the arrangement ofcomponents in FIG. 4 a. The method illustrated in FIG. 3 may includeadditional aspects supported by various adaptations and/or analogs ofthe arrangement of components in FIG. 4 b. In one aspect, the firstcommunication in the method illustrated in FIG. 2 and in the methodillustrated in FIG. 3 may include a text message, an email, audio data,an instant message, and/or image data. In another aspect, the attachmentrequest may be represented according to a criterion schema. Thecriterion schema defines a format for representing the attachmentrequest and/or defines a vocabulary of valid values includable in theattachment request. Query generator component 504 may generate anattachment request according to a criterion schema and query contenthandler component 514 may determine whether an attachment request isvalid according to the schema. Query content handler component 514 mayalso identify an attachment request based on a criterion schema and/oridentify a resource criterion in the attachment request based on acriterion schema.

A criterion schema may be identified by a schema identifier, such as aMIME type identifier and/or a URI. Second node 604 may receive acriterion schema identifier sent from first node 602 prior to sendingfirst communication 804. Alternatively or additionally, a schema may bepreconfigured in a communications agent. For example, a content handlercomponent 509 may operate on a request portion of a communicationaccording to a schema for specifying an attachment request. The rules ofthe schema may be read from a configuration data store and/or may beincluded in one or more instructions in the attachment request contenthander component 509. Query content handler component 504 and/or querycontent handler component 514 may receive a criterion schema from any ofthe sources described and/or any other suitable sources.

In another aspect, one or more resource criteria may be predefined. Aresource criterion may be defined by a criterion schema and/or may bedefined, for example by a user, according to a criterion schema. One ormore resource criteria may be included in an attachment requestexpression or condition. Some or all of the attachment requestexpression or condition may be predefined, generated by query generatorcomponent 504, and/or generated based on user input. Second node 604 mayreceive a predefined attachment request and/or a predefined attachmentrequest condition sent from first node 602. A predefined criterionand/or condition allows the first node to restrict and/or otherwisecontrol attachment requests and/or may be provided for the convenienceof communicants in specifying attachment requests.

As described above with respect to the method illustrated in FIG. 2, anattachment request may be received via a user interface elementincluding a form element. In an aspect, an attachment request mayspecify a form element. For example, an attachment requested by a secondcommunicant of second node 604 may be information known to a firstcommunicant of first node 602. An attachment request may specify a userinterface element including a form element. Locating the resource byfirst node 602 may include presenting the user interface element andreceiving input from the first communicant corresponding to the formelement. The resource sent by first node 602 as an attachment in secondcommunication 810 may include information that corresponds to the formelement and that is based on the input received from the firstcommunicant. Exemplary user interface elements that may include and/ormay be included in form elements include a window, a textbox, a slider,a list box, a drop-down list, a spinner, a menu, a menu item, a toolbar,a ribbon, a combo box, a tree, a grid, a navigation tab, a scrollbar, alabel, a tooltip, text in various fonts, a balloon, a dialog box, and/ora button.

An attachment request may be based on a date, a time, a length of time,a file type, a database record key, content of the resource, a contenttype identifier, a format rule, a vocabulary, a role of a user, asecurity attribute, a location in a data storage system such as a filesystem, an attribute of an identified resource, a size, a task, atransaction, a state, a user, a group, a requester, a relationshipincluding a requesting user and a responding user, a keyword, a tag, afolder, and/or a path portion of a resource identifier, to name a fewexamples.

As described above, a matching condition may include and/or otherwiseidentify an attachment request. A located resource must meet thematching condition in an aspect. Alternatively or additionally, anattachment request may include an instruction and/or input forgenerating a resource, and locating the resource may include generatingthe resource. Generating a resource may include creating the resourceand/or may include modifying and/or otherwise transforming an existingresource.

In the method illustrated in FIG. 2, sending a first communication mayinclude storing a criterion content type identifier in the firstcommunication, as illustrated by content-type header 904 a in FIG. 9 a.Analogously, detecting an attachment request in the method illustratedin FIG. 3 may include detecting a criterion content type identifier in afirst communication to determine that a request portion in the firstcommunication includes an attachment request. The criterion content typemay be defined to indicate that the request portion includes theattachment request.

A criterion content type identifier may include a MIME type identifier.In FIG. 9 a, “application/attachment-query” in content-type header 904 aillustrates a criterion content type identifier. A MIME type identifiermay identify a criterion schema and/or a schema for a request portionand/or an attachment in a request portion. A criterion content typeidentifier may be any detectable information that identifies any of acriterion schema and/or a schema for a request portion and/or anattachment in a request portion.

In various aspects, a resource criterion may be detected and/orrepresented based on various syntaxes, grammars, vocabularies, and/orlanguages. For example, a resource criterion may be identified and/orrepresented according to a file system search syntax, a regularexpression language, a structured query language (SQL) query, auniversal resource identifier schema, an XPATH based language, an XQuerybased language, an XML based language, an HTML based language(form-based), and/or a keyword-value pair based language.

A request portion including an attachment request in a communication maybe received by a first communicant and sent on behalf of a secondcommunicant via a first communications protocol, and a message in thecommunication may be exchanged in the communication via a secondcommunications protocol. For example, a message may be sent from secondnode 604 to first node 602 via an RTP session according to thespecification of real-time transport protocol. The second communicantmay send an attachment request in the communication session via arequest-reply protocol such as specified for XMPP. Both the XMPP requestand the RTP session may be included in a communication.

Exemplary resources that may be requested via an attachment requestinclude a file, a program component, a data base record, video data,audio data, markup language, binary data, text data, an output of aservice. Requested resources may be pre-existing, volatile, and/orgenerated in response to the request.

A request portion in a communication may be identified and detected inthe communication based on a term in a vocabulary defined by thecriterion schema to indicate that the request portion includes theattachment request and/or includes a location defined by a formatspecification to indicate that the request portion includes theattachment request. For example, a content handle component 509 may beconfigured to detect the <attachment-query> tag in attachment-querydocument 906 a in FIG. 9 a. Content handler component 509 may detectand/or otherwise identify attachment-query document 906 a as a requestportion. Content handler component 509 may be configured to detect an“application/attachment-query” MIME type identifier in a content-typeheader, or it may be configured not to detect theapplication/attachment-query MIME type identifier while still detectingthe request portion based on the <attachment-query> tag.

As described above, an attachment including a request resource may beidentified and/or detected in a communication based on a content typeidentifier. A content type identifier for an attachment may berepresented and/or detected based on an identifiable location in thecommunication defined to include some or all of the attachment, adetectable format of some or all of the attachment, a detectable dataentity included in a vocabulary specified for the attachment, and/or asymbolic identifier defined to indicate that the communication includesthe attachment.

An attachment in a communication may be sent and/or received in thecommunication via a first communications protocol, and a message in thecommunication may be, respectively, sent and/or received via a secondcommunication protocol. As described above, a message may becommunicated via voice data sent according to RTP protocol. Anattachment request and a response including an attachment may becommunicated according to a request/reply protocol specified by XMPP.

An attachment may be included in a communication based on arequested-attachment schema defining to the second node at least one ofa format and a vocabulary for processing the attachment.

To the accomplishment of the foregoing and related ends, thedescriptions and annexed drawings set forth certain illustrative aspectsand implementations of the disclosure. These are indicative of but a fewof the various ways in which one or more aspects of the disclosure maybe employed. The other aspects, advantages, and novel features of thedisclosure will become apparent from the detailed description includedherein when considered in conjunction with the annexed drawings.

It should be understood that the various components illustrated in thevarious block diagrams represent logical components that are configuredto perform the functionality described herein and may be implemented insoftware, hardware, or a combination of the two. Moreover, some or allof these logical components may be combined, some may be omittedaltogether, and additional components may be added while still achievingthe functionality described herein. Thus, the subject matter describedherein may be embodied in many different variations, and all suchvariations are contemplated to be within the scope of what is claimed.

To facilitate an understanding of the subject matter described above,many aspects are described in terms of sequences of actions that may beperformed by elements of a computer system. For example, it will berecognized that the various actions may be performed by specializedcircuits or circuitry (e.g., discrete logic gates interconnected toperform a specialized function), by program instructions being executedby one or more instruction-processing units, or by a combination ofboth. The description herein of any sequence of actions is not intendedto imply that the specific order described for performing that sequencemust be followed.

Moreover, the methods described herein may be embodied in executableinstructions stored in a computer-readable medium for use by or inconnection with an instruction execution machine, system, apparatus, ordevice, such as a computer-based or processor-containing machine,system, apparatus, or device. As used here, a “computer-readable medium”may include one or more of any suitable media for storing the executableinstructions of a computer program in one or more of an electronic,magnetic, optical, electromagnetic, and infrared form, such that theinstruction execution machine, system, apparatus, or device may read (orfetch) the instructions from the computer-readable medium and executethe instructions for carrying out the described methods. Anon-exhaustive list of conventional exemplary computer-readable mediaincludes a portable computer diskette; a random access memory (RAM); aread only memory (ROM); an erasable programmable read only memory (EPROMor Flash memory); optical storage devices, including a portable compactdisc (CD), a portable digital video disc (DVD), a high definition DVD(HD-DVD™), a Blu-ray™ disc; and the like.

Thus, the subject matter described herein may be embodied in manydifferent forms, and all such forms are contemplated to be within thescope of what is claimed. It will be understood that various details maybe changed without departing from the scope of the claimed subjectmatter. Furthermore, the foregoing description is for the purpose ofillustration only, and not for the purpose of limitation, as the scopeof protection sought is defined by the claims as set forth hereinafter.

All methods described herein may be performed in any order unlessotherwise indicated herein explicitly or by context. The use of theterms “a” and “an” and “the” and similar referents in the context of theforegoing description and in the context of the following claims are tobe construed to include the singular and the plural, unless otherwiseindicated herein explicitly or clearly contradicted by context. Theforegoing description is not to be interpreted as indicating that anynon-claimed element is essential to the practice of the subject matteras claimed.

I claim:
 1. A method comprising: receiving a resource criterion torequest a resource; sending, via a network by a second communicationsagent representing a second user to a first communications agent, afirst communication that includes an attachment request based on theresource criterion; and receiving, by the second communications agent, asecond communication addressed to the second user including, in responseto the attachment request, the resource, as an attachment.
 2. The methodof claim 1 wherein the resource criterion is restricted by a conditionidentified, via the network by a first execution environment, of a firstnode, that hosts the first communications agent to a second executionenvironment, of a second node, that hosts the second communicationsagent.
 3. The method of claim 1 wherein the first communication agentoperates in a first execution environment of a first node and theattachment request includes information for the first executionenvironment for at least one of generating and modifying the resource.4. The method of claim 1 wherein sending the first communicationincludes storing, in the first communication, a content type identifierdefined to indicate that the first communication includes the attachmentrequest.
 5. The method of claim 1 wherein the attachment requestidentifies the resource based on at least one of a name of the resource,a location of the resource in a data store, a date associated with theresource, a time associated with the resource, a content type of theresource, a length of time, a file type, a size of the resource, a task,a transaction, a keyword, and a tag.
 6. The method of claim 1 whereinthe attachment request is based on a capability of the firstcommunications agent identified via a previous communication between afirst node of a first execution environment that hosts the firstcommunications agent and a second node of a second execution environmentthat hosts the second communications agent.
 7. The method of claim 1wherein the attachment request is included in the first communication asan attachment.
 8. The method of claim 1 wherein at least one of thefirst communication and the second communication includes at least oneof a text message, an email, audio data, an instant message, and imagedata.
 9. A method comprising: receiving, via a network by a firstcommunications agent, a first communication addressed to a first user;detecting, by the first communications agent, an attachment requestincluded in the first communication; identifying, based on theattachment request, a resource; and sending, by the first communicationsagent, a second communication addressed to the second user and includingthe identified resource as an attachment, in response to detecting theattachment request.
 10. The method of claim 9 wherein at least one ofthe first communication and the second communication includes at leastone of a text message, an email, audio data, an instant message, andimage data.
 11. The method of claim 9 wherein the attachment request isbased on a resource criterion for locating the resource.
 12. The methodof claim 9 wherein the resource is located automatically in response todetecting the attachment request.
 13. The method of claim 9 whereinlocating the resource comprises: presenting a locator user interfaceelement based on the attachment request; detecting a user inputcorresponding to the locator user interface element; and locating theresource based on the attachment request in response to detecting theuser input.
 14. The method of claim 13 further includes: receivingcriterion information identifying an additional resource criterion inresponse to detecting an input from the first user; and locating theresource based on the additional resource criterion.
 15. The method ofclaim 9 wherein detecting the attachment request includes detecting acontent type identifier, in the first communication, that is defined toindicate that the second communication includes the attachment request.16. The method of claim 9 further includes: detecting a correlator inthe attachment request; and sending the correlator in the secondcommunication to identify the attachment as a response to the attachmentrequest.
 17. A non-transitory computer-readable medium embodying acomputer program, executable by a machine, the computer programcomprising executable instructions for: receiving a resource criterionto request a resource; sending, via a network by a second communicationsagent representing a second user to a first communications agent, afirst communication that includes an attachment request based on theresource criterion; and receiving, by the second communications agent, asecond communication addressed to the second user including, in responseto the attachment request, the resource, as an attachment.
 18. Anon-transitory computer-readable medium embodying a computer program,executable by a machine, the computer program comprising executableinstructions for: receiving, via a network by a first communicationsagent, a first communication addressed to a first user; detecting, bythe first communications agent, an attachment request included in thefirst communication; identifying, based on the attachment request, aresource; and sending, by the first communications agent, a secondcommunication addressed to the second user and including the identifiedresource as an attachment, in response to detecting the attachmentrequest.
 19. A system comprising: a processor that executes aninstruction included in at least one of a criterion handler component, aquery generator component, and a content manager component duringoperation of the system; the criterion handler component that duringoperation of the system is included in receiving a resource criterion torequest a resource; the query generator component that during operationof the system is included in sending, via a network by a secondcommunications agent representing a second user to a firstcommunications agent, a first communication that includes an attachmentrequest based on the resource criterion; and the content managercomponent that during operation of the system is included in receiving,by the second communications agent, a second communication addressed tothe second user including, in response to the attachment request, theresource, as an attachment.
 20. A system comprising: a processor thatexecutes an instruction included in at least one of a com-in component,a query content handler component, a resource location component, and anaccess director component during operation of the system; the com-incomponent that during operation of the system is included in receiving,via a network by a first communications agent, a first communicationaddressed to a first user; the query content handler component thatduring operation of the system is included in detecting, by the firstcommunications agent, an attachment request included in the firstcommunication; the resource location component that during operation ofthe system is included in identifying, based on the attachment request,a resource; and the access director component that during operation ofthe system is included in sending, by the first communications agent, asecond communication addressed to the second user and including theidentified resource as an attachment, in response to detecting theattachment request;